import { ajaxAsync } from 'vue-xiaobu-utils'

/**
 * login：登录
 * @param {*} username 用户名
 * @param {*} passwordMD5 密码md5值
 * @param {*} cid 手机平台版本
 * @param {*} mobileModel 手机型号（0,ios 1,安卓）
 * @param {*} mobileVersion 手机系统版本
 * @param {*} appVersion app版本号
 */
function login(username, passwordMD5, cid, mobileModel, mobileVersion, appVersion) {
  let data = {
    USERNAME: username,
    PASSWORD_MD5: passwordMD5,
    CID: cid,
    MOBILE_MODEL: mobileModel,
    MOBILE_VERSION: mobileVersion,
    APP_VERSION: appVersion
  }
  return ajaxAsync('/user/login', data, 1)
}

/**
 * thirdLogin：第三方帐号登录
 * @param {*} openid 第三方帐号的唯一编号
 * @param {*} nickName 昵称
 * @param {*} sex 性别
 * @param {*} headimgurl
 * @param {*} country 国家
 * @param {*} province 省份
 * @param {*} city 城市
 * @param {*} cid 手机平台版本
 * @param {*} mobileModel 手机型号（0,ios 1,安卓）
 * @param {*} mobileVersion 手机系统版本
 * @param {*} appVersion app版本号
 * @param {*} source 用户来源
 * @param {*} thirdLoginType 第三方登录类型
 */
function thirdLogin(openid, nickName, sex, headimgurl, country, province, city, cid, mobileModel, mobileVersion, appVersion, source = 'WeiXin', thirdLoginType = 1) {
  let data = {
    THIRD_LOGIN_TYPE: thirdLoginType,
    OPEN_ID: openid,
    NICK_NAME: nickName,
    SEX: sex,
    ICON: headimgurl,
    COUNTRY: country,
    PROVINCE: province,
    CITY: city,
    CID: cid,
    MOBILE_MODEL: mobileModel,
    MOBILE_VERSION: mobileVersion,
    SOURCE: source,
    APP_VERSION: appVersion
  }
  return ajaxAsync('/thirdlogin/login', data)
}

/**
 * thirdpartyBindPhoneLogin：第三方帐号绑定手机号码登录
 * @param {*} phone 手机号
 * @param {*} smscode 短信验证码
 * @param {*} nickname 用户昵称
 * @param {*} cid 手机平台版本
 * @param {*} mobileModel 手机型号（0,ios 1,安卓）
 * @param {*} mobileVersion 手机系统版本
 * @param {*} appVersion app版本号
 */
function thirdpartyBindPhoneLogin(phone, smscode, nickname, cid, mobileModel, mobileVersion, appVersion) {
  let data = {
    PHONE: phone,
    SMS_CODE: smscode,
    NICK_NAME: nickname,
    CID: cid,
    MOBILE_MODEL: mobileModel,
    MOBILE_VERSION: mobileVersion,
    APP_VERSION: appVersion
  }
  return ajaxAsync('/thirdlogin/bindphone/login', data)
}

/**
 * smsCodeLogin：验证码登录
 * @param {*} phone 手机号
 * @param {*} smscode 短信验证码
 * @param {*} cid 手机平台版本
 * @param {*} mobileModel 手机型号（0,ios 1,安卓）
 * @param {*} mobileVersion 手机系统版本
 * @param {*} appVersion app版本号
 */
function smsCodeLogin(phone, smscode, cid, mobileModel, mobileVersion, appVersion) {
  let data = {
    PHONE: phone,
    SMS_CODE: smscode,
    CID: cid,
    MOBILE_MODEL: mobileModel,
    MOBILE_VERSION: mobileVersion,
    APP_VERSION: appVersion
  }
  return ajaxAsync('/user/smscode/login', data)
}

/**
 * sendSmscode：通用获取短信校验码
 * @param {*} phone 手机号
 */
function sendSmscode(phone) {
  let data = {
    PHONE: phone
  }
  return ajaxAsync('/user/smscode/get', data)
}

/**
 * sendSmscodeRegister：注册时候获取短信校验码（判断号码是否已经被注册）
 * @param {*} phone 手机号
 */
function sendSmscodeRegister(phone) {
  let data = {
    PHONE: phone
  }
  return ajaxAsync('/user/smscode/register', data)
}

/**
 * sendSmscodeForget：忘记密码时获取短信校验码（判断帐号是否存在）
 * @param {*} phone 手机号
 */
function sendSmscodeForget(phone) {
  let data = {
    PHONE: phone
  }
  return ajaxAsync('/user/smscode/forget', data)
}

/**
 * sendSmscodeThirdlogin：点击第三方登录之后，如果该第三方帐号不存在，获取验证码绑定手机号
 * @param {*} phone 手机号
 * @param {*} mandatory 如果该手机号码已经绑定第三方帐号，是否解除老的第三方帐号，然后强制绑定该次新的第三方帐号（0.否，1.是）
 * @param {*} thirdLoginType 第三方登录类型：1.微信
 */
function sendSmscodeThirdlogin(phone, mandatory = 0, thirdLoginType = 1) {
  let data = {
    PHONE: phone,
    MANDATORY: mandatory,
    THIRD_LOGIN_TYPE: thirdLoginType
  }
  return ajaxAsync('/thirdlogin/smscode/get', data)
}

/**
 * updatePassword：修改密码（忘记密码）
 * @param {*} phone 手机号
 * @param {*} smscode 短信验证码
 * @param {*} passwordMD5 密码md5值
 */
function updatePassword(phone, smscode, passwordMD5) {
  let data = {
    PHONE: phone,
    SMS_CODE: smscode,
    PASSWORD_MD5: passwordMD5
  }
  return ajaxAsync('/user/city/change', data)
}

/**
 * register：用户注册
 * @param {*} phone 手机号
 * @param {*} smscode 短信验证码
 * @param {*} passwordMD5 密码md5值
 * @param {*} cid 手机平台版本
 * @param {*} mobileModel 手机型号（0,ios 1,安卓）
 * @param {*} mobileVersion 手机系统版本
 * @param {*} appVersion app版本号
 */
function register(phone, smscode, passwordMD5, cid, mobileModel, mobileVersion, appVersion) {
  let data = {
    PHONE: phone,
    SMS_CODE: smscode,
    PASSWORD_MD5: passwordMD5,
    CID: cid,
    MOBILE_MODEL: mobileModel,
    MOBILE_VERSION: mobileVersion,
    APP_VERSION: appVersion
  }
  return ajaxAsync('/user/city/register', data)
}

/**
 * getUserUnreadCount：获取用户未读消息数
 */
function getUnreadMessageCount() {
  return ajaxAsync('/user/message/unread_count', {})
}

export {
  login,
  smsCodeLogin,
  thirdLogin,
  thirdpartyBindPhoneLogin,
  sendSmscode,
  sendSmscodeRegister,
  sendSmscodeForget,
  sendSmscodeThirdlogin,
  updatePassword,
  register,
  getUnreadMessageCount
}
